The virtualization of computing systems has enabled the flexible and convenient setup and maintenance of computing systems. A computing system is virtualized by having a virtual machine operate remotely from the client computing system that the virtual machine serves. The virtual machine emulates the logic of a fully operational computing system including the operating system, its various applications, and corresponding settings, and interfaces with the user via a remotely located client computing system. For instance, the virtual machine receives client input from the remote client, and provides resulting desktop image information back to the client. The client does not operate the corresponding operating system, but rather just receives the user input, and renders the desktop using the resulting desktop image provided by the virtual machine.
The virtual machine operates on a host computing system (also referred to in the art as a “host” or “node” in the technical art of virtualization) typically with many other virtual machines. The hardware used by the virtual machine is also often on the host, including processing resources, storage, network, memory, and so forth. Each virtual machine maintains the proper emulation of an isolated computing system by interfacing with the available hardware through a hypervisor.
Some hosts are aggregated into “clusters”. The hardware resources of the hosts within the cluster are often shared across the various hosts within the cluster. The cluster logic is also responsible for determining whether there is sufficient space within the hosts of the cluster as a whole to be able to provide for proper failover guarantees. For instance, the owner of the cluster may provide high availability guarantees to subscribers that use the various virtual machines. To support such high availability, the owner of the host may want to be sure that there is enough space in the hosts such that if any one of those hosts should fail, migration of the virtual machines would be successful.
Conventional techniques for providing such estimation are based on what is referred to as the slot-based method. In this method, the virtual machine manager used an approximation that considered all virtual machines to be consuming the same amount of memory. This is a very rough approximation, and in some circumstances, the virtual memory manager was not able to prove that the cluster was capable of recovering from nodes failures when, in fact, the cluster was capable of such recovery.